home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / src / exampleCode / viewkit / VCal / TimeEntry.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-08-02  |  3.6 KB  |  124 lines

  1. /*
  2.  * Copyright (C) 1994, Silicon Graphics, Inc.
  3.  * All Rights Reserved.
  4.  *
  5.  * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
  6.  * the contents of this file may not be disclosed to third parties, copied or
  7.  * duplicated in any form, in whole or in part, without the prior written
  8.  * permission of Silicon Graphics, Inc.
  9.  *
  10.  * RESTRICTED RIGHTS LEGEND:
  11.  * Use, duplication or disclosure by the Government is subject to restrictions
  12.  * as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
  13.  * and Computer Software clause at DFARS 252.227-7013, and/or in similar or
  14.  * successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
  15.  * rights reserved under the Copyright Laws of the United States.
  16.  */
  17. #ifndef _TIME_ENTRY_
  18. #define _TIME_ENTRY_
  19.  
  20. #include <Vk/VkComponent.h>
  21. #include <Vk/VkResizer.h>
  22.  
  23. typedef enum TimeEntryReason { TE_none, TE_selected, TE_textChanged,
  24.                    TE_timeChanged, TE_postMenu, TE_deselect };
  25.  
  26. class TimeEntry;
  27.  
  28. typedef struct {
  29.   TimeEntry *obj;
  30.   TimeEntryReason reason;
  31.   XEvent *event;
  32. } TimeEntryCallback;
  33.  
  34. class TimeGrid;
  35. class VkResizer;
  36. class TimeInterval;
  37.  
  38. class TimeEntry : public VkComponent {
  39. public:
  40.   TimeEntry(const char *name, TimeGrid *grid);
  41.   ~TimeEntry();
  42.  
  43.   virtual const char* className();
  44.   virtual void raise();
  45.  
  46.   void setCallback(XtCallbackProc proc, XtPointer client_data);
  47.   XtPointer getCallbackData() { return _callbackData; }
  48.   int start() { return _start; }
  49.   int length() { return _length; }
  50.   virtual Boolean setTimeInterval(int start, int length);
  51.   virtual char *getText();
  52.   virtual void setText(char *str);
  53.   virtual Boolean reposition();
  54.   void callCallback(TimeEntryReason reason, XEvent *event = NULL);
  55.   virtual void select(Boolean makeModified = False);
  56.  
  57. protected:
  58.   virtual void build();
  59.   virtual void destroy();
  60.  
  61.   void menu(XEvent *event);
  62.   void layerText(Boolean makeModified);
  63.  
  64.   static void button_press(Widget w, XtPointer client_data, XEvent *event,
  65.                Boolean *dispatch);
  66.   static void text_stub(Widget w, XtPointer client_data, XtPointer call_data);
  67.  
  68.   Widget _label;
  69.   int _start, _length;
  70.   TimeGrid *_grid;
  71.   XtCallbackProc _callback;
  72.   XtPointer _callbackData;
  73. };
  74.  
  75. class TimeEntryText: public TimeEntry {
  76. public:
  77.   TimeEntryText(const char *name, TimeGrid *grid, Boolean editable);
  78.   ~TimeEntryText();
  79.  
  80.   virtual void hide();
  81.   virtual void raise();
  82.  
  83.   virtual char *getText();
  84.   virtual void setText(char *str);
  85.   virtual Boolean reposition();
  86.   void setModified(Boolean v) { _modified = v; }
  87.   virtual Boolean setTimeInterval(int start, int length);
  88.  
  89. protected:
  90.   virtual void build();
  91.   virtual void destroy();
  92.   void resizeCallback(VkComponent *, XtPointer, XtPointer);
  93.   void updateInterval();
  94.   void textChanged();
  95.   Boolean textComplete();
  96.   void doActivate();
  97.   void scheduleActivate();
  98.   void adjustInterval();
  99.  
  100. /*  static void resize_stub(Widget w, XtPointer client_data,
  101.   XtPointer call_data);
  102. */
  103.   static void activate_stub(Widget w, XtPointer client_data,
  104.                 XtPointer call_data);
  105.   static void modify_stub(Widget w, XtPointer client_data,
  106.                 XtPointer call_data);
  107.   static void focus_stub(Widget w, XtPointer client_data,
  108.              XtPointer call_data);
  109.   static void modified_stub(Widget w, XtPointer client_data,
  110.                 XtPointer call_data);
  111.   static void button_press(Widget w, XtPointer client_data, XEvent *event,
  112.                Boolean *dispatch);
  113.   static Boolean sched_activate(XtPointer client_data);
  114.   static void interval_stub(Widget w, XtPointer client_data,
  115.                 XtPointer call_data);
  116.  
  117.   VkResizer *_resizer;
  118.   Boolean _modified, _nonEmpty;
  119.   XtWorkProcId _id;
  120.   TimeInterval *_interval;
  121. };
  122.  
  123. #endif
  124.